# 六、插入图片
# workbook.add_chartsheet({})函数是最经典的插入图表函数，
# 字典里的第一个键type参数指的是放入的图表类型。而第二个键指的是某些图表类型中的图表子类型。
# 支持的图表类型有以下：
# area：创建一个Area（实线）样式表。
# bar：创建条形样式（转置直方图）图表。
# column：创建列样式（直方图）图表。
# line：创建线型图表。
# pie：创建一个饼图样式图表。
# doughnut：创建一个甜甜圈样式表。
# scatter：创建散点图样式图。
# stock：创建一个股票样式图。
# radar：创建雷达样式表。

import xlsxwriter

workbook = xlsxwriter.Workbook('条形图.xlsx')
worksheet = workbook.add_worksheet('Sheet1')
# 创建图表
chart = workbook.add_chart({'type': 'column'})
# 设置数据
data = [
    [3, 6, 9, 12, 15],
    [2, 4, 6, 8, 10],
    [1, 2, 3, 4, 5],
]
worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])
# 设置了图表类型接下来就是插入数据，插入数据我们用chart.add_series(options)函数。
# 在chart.add_series()函数中我们用到的字典类型格式为：{'values': '=工作表名!$列对应字母$行对应数字:$列对应字母$行对应数字'}
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})
# 6.3 设置x轴与y轴属性
chart.set_x_axis({
    'name': 'Zaoqi Python',
    'name_font': {'size': 12, 'bold': True},
    'num_font': {'italic': True},
})
chart.set_y_axis({
    'name': 'Zaoqi Python',
    'name_font': {'size': 12, 'bold': True},
    'num_font': {'italic': True},
})

# 6.4 合并两个不同类型的图表
# 新建一个线条表
line_chart = workbook.add_chart({'type': 'line'})
line_chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
line_chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
line_chart.add_series({'values': '=Sheet1!$C$1:$C$5'})
# 合并图表用combine()函数
chart.combine(line_chart)

# 6.5 设置图表尺寸 用set_size()函数来设置图表尺寸

# insert_chart()函数是将图表插入到工作表指定的位置
# 函数里面有六个参数：width、height，x_offset,y_offset
# 前两个代表宽度与高度是以像素为单位，默认的图表的宽度*高度为480 x 288像素。
chart.set_size({'width': 720, 'height': 576})
chart.set_size({'x_scale': 1.5, 'y_scale': 2})
chart.set_size({'x_offset': -10, 'y_offset': 5})

# 6.6 设置图表标题
chart.set_title({'name': 'Zaoqi Python title'})
# chart.set_title({
#     'name': 'Zaoqi Python Title',
#     'overlay': True,
#     'layout': {
#         'x': 0.62,
#         'y': 0.24,
#     }
# })
# chart.set_title({'none': True})  #关闭此默认标题同时关闭所有其他set_title()选项。

# 6.7 设置图例
# none：关闭图例；默认是开启的。
# position：图例的位置。font：图例的字体属性。delete_series：删除指定图例，以列表呈现。
chart.set_legend({'none': True})
chart.set_legend({'position': 'none'})
chart.set_legend({'position': 'bottom'})
chart.set_legend({'font': {'size': 4, 'bold': True}})
chart.set_legend({'delete_series': [0, 3]})

# 6.8 设置图表样式 set_style(num) 用于将图表的样式设置为Excel中“设计”选项卡上可用的48种内置样式之一。
# 参数num就是48种内置样式之一。
chart.set_style(6)

# 6.9 设置图表区域
# 用set_chartarea()函数来设置图表区域的属性图表区域，也就是图表背后的区域。
chart.set_chartarea({
    'fill': {'color': 'black'}
})

worksheet.insert_chart('A7', chart)

# 七、关闭Excel文件
workbook.close()
